1. Field of the Invention
This invention relates generally to methods and structures for improving system storage of computer systems and more particularly to a system and method for optimizing the storage system architecture as an intelligent random access memory (RAM) based storage system for handling files.
2. Description of the Related Art
Computer systems typically include a processor, main memory and secondary storage memory. The processor is, for example, a Central Processing Unit (CPU) or a microprocessor. The main memory is normally Random Access Memory (RAM), and the secondary storage is typically a hard disk drive.
As today's applications create the need for continuous data availability, memory storage needs have increased proportionately. Developers are producing applications which require increasingly large amounts of memory often exceeding the available RAM. Therefore, heavy demands are placed on the input/output (IO) subsystem that supports pagefiles. For example, high resolution digital image manipulation applications require large amounts of memory.
In addition, many applications make heavy use of temporary files. Due to this heavy use of temporary files, application level performance becomes IO-bound by asynchronous writes to temporary files that are read by the application and then quickly deleted. Often all the reads are satisfied by file cache, however the writes to physical disk can not be stopped by the operating system (OS). This may lead to the situation where multiple gigabytes (GB) of writes to disk exist, yet there are no reads. In this example, all of the writes to physical disk are unnecessary and are a major drag on system performance.
The use of semiconductor memory to support the new generations of high speed CPU's is becoming increasingly expensive. Moreover, very few, if any, workstation motherboards support more than 1 GB of memory.
However, a number of techniques in the prior art attempt to meet the demands of the increased memory requirements without sacrificing speed. RAM disks are one such technology trying to meet the increasing demands. These are virtual disks, usually implemented using system memory. The virtual disks are managed and presented to a user as small disk drives. The drawbacks for RAM disks include the prohibitively expensive costs of system memory and the conflicting demands on the limited amount of RAM in the system.
Another well established technology that is a fundamental component of all major operating systems is virtual memory. With virtual memory, the amount of host memory available to applications is augmented by storage on a disk drive or redundant array of inexpensive disks (RAID) array. However, a substantial performance penalty in terms of speed is sacrificed when information rolled out to disk has to be brought back into RAM.
Yet another technology attempting to address the demands for increased memory is that of caching data within an IO storage subsystem. However, the caching of data does nothing to address the primary issues with temporary files mentioned above. In addition the caching of data does very little to address pagefile activity since pagefile writes are synchronous writes, i.e., the IO subsystem is instructed not to cache them. Furthermore, the content of the block level cache is flushed out to the disk when the disk subsystem is not very busy, thus creating unnecessary disk activity.
As a result, there is a need to solve the problems of the prior art to provide a low cost solution to the increased demand being placed on system memory while simultaneously increasing system performance through the intelligent deletion of temporary files.